From: Debarshi Ray Date: Mon, 28 Aug 2017 16:58:50 +0000 (+0200) Subject: GtkBuilder: Prefer "type-func" over "class" when looking for the GType X-Git-Tag: archive/raspbian/3.24.39-1+rpi1~1^2~65^2~39^2~276 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=a827e9222627b0462ae4c6bd063bf922faf4277a;p=gtk%2B3.0.git GtkBuilder: Prefer "type-func" over "class" when looking for the GType https://bugzilla.gnome.org/show_bug.cgi?id=786932 --- diff --git a/gtk/gtkbuilderparser.c b/gtk/gtkbuilderparser.c index 798f29fd7c..121935502e 100644 --- a/gtk/gtkbuilderparser.c +++ b/gtk/gtkbuilderparser.c @@ -268,34 +268,34 @@ parse_object (GMarkupParseContext *context, return; } - if (object_class) + if (type_func) { - object_type = gtk_builder_get_type_from_name (data->builder, object_class); + /* Call the GType function, and return the GType, it's guaranteed afterwards + * that g_type_from_name on the name will return our GType + */ + object_type = _get_type_by_symbol (type_func); if (object_type == G_TYPE_INVALID) { g_set_error (error, GTK_BUILDER_ERROR, - GTK_BUILDER_ERROR_INVALID_VALUE, - "Invalid object type '%s'", object_class); + GTK_BUILDER_ERROR_INVALID_TYPE_FUNCTION, + "Invalid type function '%s'", type_func); _gtk_builder_prefix_error (data->builder, context, error); return; - } + } } - else if (type_func) + else if (object_class) { - /* Call the GType function, and return the GType, it's guaranteed afterwards - * that g_type_from_name on the name will return our GType - */ - object_type = _get_type_by_symbol (type_func); + object_type = gtk_builder_get_type_from_name (data->builder, object_class); if (object_type == G_TYPE_INVALID) { g_set_error (error, GTK_BUILDER_ERROR, - GTK_BUILDER_ERROR_INVALID_TYPE_FUNCTION, - "Invalid type function '%s'", type_func); + GTK_BUILDER_ERROR_INVALID_VALUE, + "Invalid object type '%s'", object_class); _gtk_builder_prefix_error (data->builder, context, error); return; - } + } } else { diff --git a/testsuite/gtk/builder.c b/testsuite/gtk/builder.c index 9aad57aa21..339ad110b2 100644 --- a/testsuite/gtk/builder.c +++ b/testsuite/gtk/builder.c @@ -762,6 +762,10 @@ test_types (void) " " ""; const gchar buffer3[] = + "" + " " + ""; + const gchar buffer4[] = "" " " ""; @@ -779,10 +783,16 @@ test_types (void) g_assert (GTK_IS_WINDOW (window)); gtk_widget_destroy (GTK_WIDGET (window)); g_object_unref (builder); + + builder = builder_new_from_string (buffer3, -1, NULL); + window = gtk_builder_get_object (builder, "window"); + g_assert (GTK_IS_WINDOW (window)); + gtk_widget_destroy (GTK_WIDGET (window)); + g_object_unref (builder); error = NULL; builder = gtk_builder_new (); - gtk_builder_add_from_string (builder, buffer3, -1, &error); + gtk_builder_add_from_string (builder, buffer4, -1, &error); g_assert_error (error, GTK_BUILDER_ERROR, GTK_BUILDER_ERROR_INVALID_TYPE_FUNCTION); g_error_free (error); g_object_unref (builder);